import { Payload } from "../../../structures/dto/Payload";
import { Client } from "../../Client";
import { GATEWAY_CONNECT } from "./GATEWAY_CONNECT";
import { GATEWAY_HELLO } from "./GATEWAY_HELLO";
import { HEARTBEAT_ACK } from "./HEARTBEAT_ACK";
import { HELLO } from "./HELLO";
import { MESSAGE_CREATE } from "./MESSAGE_CREATE";
import { MESSAGE_UPDATE } from "./MESSAGE_UPDATE";
import { READY } from "./READY";
import { PRESENCE_UPDATE } from "./PRESENCE_UPDATE";
import { GATEWAY_UPDATE_SUPPORTED_EVENTS } from "./GATEWAY_UPDATE_SUPPORTED_EVENTS";
import { CHANNEL_STATUSES } from "./CHANNEL_STATUSES";
import { CONVERSATION_SUMMARY_UPDATE } from "./CONVERSATION_SUMMARY_UPDATE";
import { GUILD_INTEGRATIONS_UPDATE } from "./GUILD_INTEGRATIONS_UPDATE";
import { GUILD_MEMBER_LIST_UPDATE } from "./GUILD_MEMBER_LIST_UPDATE";
import { INTEGRATION_UPDATE } from "./INTEGRATION_UPDATE";
import { MESSAGE_ACK } from "./MESSAGE_ACK";
import { MESSAGE_DELETE } from "./MESSAGE_DELETE";
import { MESSAGE_REACTION_ADD } from "./MESSAGE_REACTION_ADD";
import { MESSAGE_REACTION_REMOVE } from "./MESSAGE_REACTION_REMOVE";
import { SESSIONS_REPLACE } from "./SESSIONS_REPLACE";
import { THREAD_CREATE } from "./THREAD_CREATE";
import { THREAD_SYNC } from "./THREAD_SYNC";
import { THREAD_UPDATE } from "./THREAD_UPDATE";
import { TYPING_START } from "./TYPING_START";
import { VOICE_STATE_UPDATE } from "./VOICE_STATE_UPDATE";
import { GUILD_SCHEDULED_EVENT_UPDATE } from "./GUILD_SCHEDULED_EVENT_UPDATE";
import { CHANNEL_TOPIC_UPDATE } from "./CHANNEL_TOPIC_UPDATE";
import { VOICE_CHANNEL_STATUS_UPDATE } from "./VOICE_CHANNEL_STATUS_UPDATE";
import { THREAD_DELETE } from "./THREAD_DELETE";

export type Handler = (client: Client, d: Payload) => void;

export const handlers = {
    GATEWAY_CONNECT,
    GATEWAY_HELLO,
    GATEWAY_UPDATE_SUPPORTED_EVENTS,
    VOICE_CHANNEL_STATUS_UPDATE,
    CHANNEL_STATUSES,
    CONVERSATION_SUMMARY_UPDATE,
    GUILD_INTEGRATIONS_UPDATE,
    GUILD_MEMBER_LIST_UPDATE,
    INTEGRATION_UPDATE,
    HEARTBEAT_ACK,
    PRESENCE_UPDATE,
    GUILD_SCHEDULED_EVENT_UPDATE,
    HELLO,
    MESSAGE_CREATE,
    MESSAGE_UPDATE,
    MESSAGE_ACK,
    MESSAGE_DELETE,
    MESSAGE_REACTION_ADD,
    MESSAGE_REACTION_REMOVE,
    SESSIONS_REPLACE,
    THREAD_CREATE,
    THREAD_SYNC,
    THREAD_UPDATE,
    THREAD_DELETE,
    TYPING_START,
    VOICE_STATE_UPDATE,
    CHANNEL_TOPIC_UPDATE,
    READY,
};